home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 52
/
Amiga Format AFCD52 (Issue 136, May 2000).iso
/
-serious-
/
programming
/
other
/
evaluate
/
eval.c
next >
Wrap
C/C++ Source or Header
|
2000-02-28
|
902b
|
37 lines
#include <stdio.h>
#include <stdlib.h>
#include "evaluate.h"
int main(int argc, char **argv) {
double realres;
int error, type;
long intres;
if (argc < 2) {
printf("usage: %s <expression>\n", argv[0]);
return EXIT_FAILURE;
}
printf("evaluating '%s'\n", argv[1]);
type = Calculate(argv[1], &intres, &realres, &error);
if (error != RESULT_OK) {
char *message = "unknown error";
switch (error) {
case ERROR_SYNTAX: message = "syntax error\n"; break;
case ERROR_VARNOTFOUND: message = "variable not found\n"; break;
case ERROR_NOMEM: message = "not enough memory available\n"; break;
case ERROR_DIV0: message = "division by zero\n"; break;
}
printf(message);
return EXIT_FAILURE;
}
if (type == RESULT_INTEGER)
printf("result = %ld\n", intres);
else
printf("result = %g\n", realres);
return EXIT_SUCCESS;
}